<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
  //  明白集合的特性是。首先，它的键和值是一样的。无序且无重复的！

  class Set{
    constructor(){
      // 以对象形式来进行实现
      this.item = {}
    }
   
    // 原型上的has方法
    has(value){
      return this.item.hasOwnProperty(value)
    }
    
    // 原型上的增加方法
    add(value){
    if(this.has(value)) return false
    // 以键值对的形式为其增加值(这里要求考虑到键值是一样的)
     this.item[value] = value
     return true
    }

  //原型上的删除方法
   remove(value){
    if(this.has(value)) return false
    delete this.item[value]
    return true
  }
 
  clear(){
    // 直接让对象为空，相当于直接清除
     this.item = {}
  }
  
  size(){
    Object.keys(this.item).length

    // let count = 0
    // for(var value in this.item){
    //   if(this.item.has(value)){
    //     count++
    //   }
    // }
    //  return count
  }

 values(){
    return Object.keys(this.item)
 }
  }





  </script>
</body>
</html>